/*-----------------------------------------------File Info------------------------------------------------
** File Name:               Protocol.c  
** Last modified date:      2016.07.22
** Last version:            V0.1
** Description:             
**--------------------------------------------------------------------------------------------------------            
** Created date:            2016.09.07
** author:                  YLY
** Version:                 V0.1
** Descriptions:            协议处理
**--------------------------------------------------------------------------------------------------------
*/
#ifndef _PROTOCOL_H_
#define _PROTOCOL_H_ 
#include "userConfig.h"

/* 定义i2c从机地址7位地址 0x00-0x7F ,默认使用地址0*/
#define PRO_I2C_SLAVE_ADDR0 			0x3c	//
#define	PRO_CLK_RATE 					400000u	//400K
#define PRO_SEND_BUF_SIZE				64
#define PRO_RECE_BUF_SIZE				640		//单个数据包512	

typedef struct strPro
{
	uint8_t len[2];			//数据长度高位，因为INT类型数据存储方式的为低位在前，高位在后，故不能使用
	uint8_t check;			//校验位
	uint8_t cmd;			//协议类型
	uint8_t data[1];		//数据buf
}tsProtocol;

typedef struct strProRece
{
	uint32_t len;
	uint8_t  data[PRO_RECE_BUF_SIZE];
}tsProRece;


typedef enum
{
	PRO_IDLE,
	PRO_WORKING,
}teProStatus;

/****************定义I2C通讯协议 ***************************/
//------------------------------------上行--------------------------------------
#define ANSWER_MASTER					0x10		//应答主机
#define RESPONSE_PRO_VER				0x12		//回复程序版本号协议
#define UPDATE_DATA_REQUEST				0x21		//请求升级数据包
#define GET_HOST_WDT					0x30		//获取主机喂狗信号

//-----------------------------------下行--------------------------------------
/************升级单片机APROM程序相关协议************/
#define GET_PROGRAM_VER					0x97		//获取单片机软件信息
#define START_UPDATE_PRO				0x98		//启动软件升级
#define UPDATE_DATA						0x99		//升级数据
#define UPDATE_FINISH					0x9A    //升级结束

//------------应答成功与失败---------------------------------------------------
#define MASTER_SUCCESS 					0x00		//成功
#define MASTER_FAIL 					0x01		//失败


extern void protocolInit(void);
extern void requestStartUpdata(void);
extern bool protocolProcessing(void);
#endif /* _AGREEMENT_H_ */

